package com.gitee.qdbp.general.common.api.settings.service;

import java.util.List;
import com.gitee.qdbp.able.exception.ServiceException;
import com.gitee.qdbp.able.jdbc.ordering.OrderPaging;
import com.gitee.qdbp.able.jdbc.paging.PageList;
import com.gitee.qdbp.base.system.model.IAccount;
import com.gitee.qdbp.general.common.api.settings.model.SystemConfigCoreBean;
import com.gitee.qdbp.general.common.api.settings.model.SystemConfigCoreUpdate;
import com.gitee.qdbp.general.common.api.settings.model.SystemConfigCoreWhere;
import com.gitee.qdbp.general.common.api.settings.params.UpdateCustomizeValueParams;

/**
 * 系统配置业务接口<br>
 * system_config_core记录只在开发时维护<br>
 * 管理员只能修改configValue, 并保存在system_config_customize表<br>
 * 查询时以system_config_customize表的configValue优先<br>
 *
 * @author zhh
 * @version 170802
 */
public interface ISystemConfigExecutor {

    String createCoreRecord(SystemConfigCoreBean model, IAccount me) throws ServiceException;

    void updateCoreRecord(SystemConfigCoreUpdate model, IAccount me) throws ServiceException;

    void deleteCoreRecordByIds(String scene, List<String> ids, IAccount me) throws ServiceException;

    void deleteCoreRecordByKeys(String scene, List<String> configKeys, IAccount me) throws ServiceException;

    void updateCustomizeValue(UpdateCustomizeValueParams params, IAccount me) throws ServiceException;

    void deleteCustomizeValueByIds(String scene, List<String> ids, IAccount me) throws ServiceException;

    void deleteCustomizeValueByKeys(String scene, List<String> configKeys, IAccount me) throws ServiceException;

    /** 根据条件查询开发视图的配置项列表 **/
    PageList<SystemConfigCoreBean> listCoreRecord(SystemConfigCoreWhere where, OrderPaging paging)
            throws ServiceException;

}
